//
//  STSportingManager.h
//  STBest
//
//  Created by apple on 2017/8/28.
//  Copyright © 2017年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import "STSportingTracking.h"

// 运动管理快捷访问
#define  _SportingMgr   ([STSportingManager sharedInstance])

typedef NS_ENUM(NSUInteger, STSportingState) {
    STSportingStateUnsport,
    STSportingStateSporting,
    STSportingStatePaused
};

// 定义了GPS状态
typedef NS_ENUM(NSUInteger, STSportingGPSState) {
    STSportingGPSStateDisconnect,
    STSportingGPSStateGood,
    STSportingGPSStateNormal,
    STSportingGPSStateBad
};

// 运动事件
typedef NS_ENUM(NSUInteger, STSportingEvent) {
    STSportingEventBegin,   // 运动开始
    STSportingEventPause,   // 运动暂停
    STSportingEventResume,  // 运动恢复
    STSportingEventEnd,     // 运动结束
    STSportingEventCancel,  // 运动取消
    STSportingEventGPSDisenable,    // GPS信号丢失事件
    STSportingEventGPSEnable        // GPS信号可用
};

#define kSportEvent                                     @"kSportEvent"
#define STSportingEventTriggerNotification              @"STSportingEventTriggerNotification"

// 线段被生成后发出通知
#define kSporingTrackingLine                                @"kSporingTrackingLine"
#define STSporingTrackingLineDidBeGeneratedNotification     @"STSporingTrackingLineDidBeGeneratedNotification"

// 运动状态发生变化通知
#define kState                                              @"kState"
#define STSportingStateDidChangedNotification               @"STSportingStateDidChangedNotification"

// GPS信号改变时候发出通知
#define kGPSState                                           @"kGPSState"
#define STSportingGPSStateDidChangedNotification            @"STSportingGPSStateDidChangedNotification"

// 运动管理类
@interface STSportingManager : NSObject

// 历史运动对象
@property(readonly, nonatomic)NSArray<STSportingTracking *>        *sportingTrackings;

//正在运动对象
@property(readonly, nonatomic)STSportingTracking                   *sportingsportingTracking;

// 运动状态
@property(readonly, nonatomic)STSportingState                       state;

// GPS信号状态
@property (readonly, nonatomic)STSportingGPSState                    gpsState;

+ (STSportingManager *)sharedInstance;


#pragma mark - 运动列表管理 -
/*
 未来编写业务逻辑是 无外乎就是增删改查
 */
// 添加一个运动
- (void)addSportingTracking:(STSportingTracking *)sportingTracking;

// 删除一个运动
- (void)removeSportingTracking:(STSportingTracking *)sportingTracking;

#pragma mark - 运动控制 -
// 开始运动
- (void)startWithType:(STSportingTrackingType)type;

// 暂停运动
- (void)pause;

// 继续运动
- (void)resume;

// 取消运动
- (void)cancel;

// 完成运动
- (void)finish;
@end
